// pages/my-enterprise/my-enterprise.ts
import { parseFilesJson } from '../../../api/enterprise.js';
import { PAGES, goToPage } from '../../../config/pages';
import userManager from '../../../utils/userManager.js';

Page({
  data: {
    enterprise: null as any,
    files: [] as any[],
    loading: true,
    statusMap: {
      '0': { text: '审核中', color: '#ed7b2f', icon: 'fa-clock' },
      '1': { text: '已认证', color: '#00a870', icon: 'fa-check-circle' },
      '2': { text: '审核未通过', color: '#d54941', icon: 'fa-times-circle' }
    }
  },

  onLoad() {
    this.loadEnterpriseInfo();
  },

  onShow() {
    // 页面显示时使用缓存数据（企业编辑后已自动刷新）
    this.loadEnterpriseInfo(false);
  },

  async loadEnterpriseInfo(forceRefresh = false) {
    wx.showLoading({ title: '加载中...' });
    
    try {
      // 从缓存获取用户信息（包含企业数据）
      // 正常情况使用缓存，只在特殊情况强制刷新
      const userData = await userManager.getUserInfo(forceRefresh, false);
      console.log('获取用户信息（含企业）:', userData);
      
      // 从用户信息中提取企业数据
      if (userData && userData.enterprise) {
        const enterpriseData = userData.enterprise;
        
        // 处理企业状态
        const status = String(enterpriseData.status || '0');
        const statusInfo = this.data.statusMap[status as '0' | '1' | '2'] || { 
          text: '未知', 
          color: '#999', 
          icon: 'fa-question-circle' 
        };
        
        // 处理企业类别（逗号分隔转数组）
        let categories = [];
        if (enterpriseData.tags) {
          if (Array.isArray(enterpriseData.tags)) {
            // 如果 tags 已经是数组，直接使用
            categories = enterpriseData.tags.filter(tag => tag && tag.trim());
          } else if (typeof enterpriseData.tags === 'string') {
            // 如果是字符串，按逗号分割
            categories = enterpriseData.tags.split(',').filter(tag => tag.trim());
          }
        }
        
        // 构建显示数据
        const displayData = {
          id: enterpriseData.id,
          name: enterpriseData.company_name || enterpriseData.name || '未设置',
          shortName: this.getShortName(enterpriseData.company_name || enterpriseData.name),
          type: this.getEnterpriseType(enterpriseData),
          category: categories,
          financing: this.getFundingStageText(enterpriseData.funding_stage),
          scale: this.getStaffSizeText(enterpriseData.staff_size),
          nature: this.getNatureText(enterpriseData.nature),
          status: enterpriseData.status,
          statusText: statusInfo.text,
          statusColor: statusInfo.color,
          statusIcon: statusInfo.icon,
          contact: enterpriseData.contact_name || '未设置',
          phone: enterpriseData.contact_phone || '未设置',
          address: enterpriseData.address || '未设置',
          description: enterpriseData.description || '暂无描述',
          logo_files: enterpriseData.logo_files,
          license_file: enterpriseData.license_file,
          cert_file: enterpriseData.cert_file,
          agent_file: enterpriseData.agent_file
        };
        
        // 构建文件列表
        const files = this.buildFileList(enterpriseData);
        
        this.setData({
          enterprise: displayData,
          files,
          loading: false
        });
      } else {
        // 没有企业信息，提示并返回
        wx.showModal({
          title: '提示',
          content: '您还没有关联企业，是否前往创建？',
          success: (res) => {
            if (res.confirm) {
              goToPage(PAGES.CREATE_ENTERPRISE);
            } else {
              wx.navigateBack();
            }
          }
        });
        
        this.setData({
          loading: false
        });
      }
    } catch (error: any) {
      console.error('加载企业信息失败:', error);
      wx.showToast({
        title: typeof(error) === 'string' ? error : (error?.msg || '加载失败，请稍后重试'),
        icon: 'none'
      });
      this.setData({
        loading: false
      });
      
      // 失败时也返回
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    } finally {
      wx.hideLoading();
    }
  },

  // 获取企业简称（取前两个字）
  getShortName(name: string): string {
    if (!name || name === '未设置') return '企业';
    return name.substring(0, 2);
  },

  // 获取企业类型文本
  getEnterpriseType(data: any): string {
    let category = '未设置';
    if (data.tags) {
      if (Array.isArray(data.tags)) {
        category = data.tags.length > 0 ? data.tags.join('、') : '未设置';
      } else if (typeof data.tags === 'string') {
        category = data.tags;
      }
    }
    const nature = this.getNatureText(data.nature);
    return `${category} · ${nature}`;
  },

  // 获取融资阶段文本
  getFundingStageText(value: string): string {
    const map: any = {
      'seed': '种子轮',
      'angel': '天使轮',
      'a': 'A轮',
      'b': 'B轮',
      'c': 'C轮',
      'd': 'D轮及以上',
      'ipo': '已上市',
      'none': '未融资'
    };
    return map[value] || value || '未设置';
  },

  // 获取人员规模文本
  getStaffSizeText(value: string): string {
    const map: any = {
      '1-10': '1-10人',
      '11-50': '11-50人',
      '51-200': '51-200人',
      '201-500': '201-500人',
      '501-1000': '501-1000人',
      '1000+': '1000人以上'
    };
    return map[value] || value || '未设置';
  },

  // 获取公司性质文本
  getNatureText(value: string): string {
    const map: any = {
      'limited': '有限责任公司',
      'joint': '股份有限公司',
      'partnership': '合伙企业',
      'individual': '个人独资企业',
      'foreign': '外商投资企业',
      'other': '其他'
    };
    return map[value] || value || '未设置';
  },

  // 辅助函数：规范化文件数据（处理数组或JSON字符串）
  normalizeFileData(fileData: any): string[] {
    // 如果为空或无效值
    if (!fileData || fileData === 'undefined' || fileData === 'null') {
      return [];
    }
    
    // 如果已经是数组，直接返回
    if (Array.isArray(fileData)) {
      return fileData.filter(url => url && typeof url === 'string');
    }
    
    // 如果是字符串，尝试解析
    if (typeof fileData === 'string') {
      try {
        return parseFilesJson(fileData);
      } catch (error) {
        console.error('解析文件数据失败:', error);
        return [];
      }
    }
    
    return [];
  },

  // 构建文件列表
  buildFileList(data: any): any[] {
    const files = [];
    
    // 营业执照
    const licenseFiles = this.normalizeFileData(data.license_file);
    if (licenseFiles.length > 0) {
      files.push({
        name: '营业执照',
        url: licenseFiles[0],
        type: 'image',
        icon: 'fa-file-pdf',
        meta: '图片格式 · 已上传'
      });
    }
    
    // ISO认证文件
    const certFiles = this.normalizeFileData(data.cert_file);
    if (certFiles.length > 0) {
      files.push({
        name: 'ISO认证证书',
        url: certFiles[0],
        type: 'image',
        icon: 'fa-certificate',
        meta: '图片格式 · 已上传'
      });
    }
    
    // 其他资质文件
    const agentFiles = this.normalizeFileData(data.agent_file);
    if (agentFiles.length > 0) {
      files.push({
        name: '其他资质证书',
        url: agentFiles[0],
        type: 'image',
        icon: 'fa-file-alt',
        meta: '图片格式 · 已上传'
      });
    }
    
    console.log('构建的文件列表:', files);
    return files;
  },

  // 编辑企业信息
  editEnterprise() {
    goToPage(PAGES.EDIT_COMPANY);
  },

  // 预览文件
  previewFile(e: any) {
    const { index } = e.currentTarget.dataset;
    const file = this.data.files[index];
    
    if (file && file.url) {
      // 预览图片
      wx.previewImage({
        current: file.url,
        urls: [file.url]
      });
    } else {
      wx.showToast({
        title: '文件不存在',
        icon: 'none'
      });
    }
  },

  // 下载文件
  downloadFile(e: any) {
    const { index } = e.currentTarget.dataset;
    const file = this.data.files[index];
    
    if (file && file.url) {
      wx.downloadFile({
        url: file.url,
        success: (res) => {
          if (res.statusCode === 200) {
            wx.showToast({
              title: '下载成功',
              icon: 'success'
            });
          }
        },
        fail: () => {
          wx.showToast({
            title: '下载失败',
            icon: 'none'
          });
        }
      });
    } else {
      wx.showToast({
        title: '文件不存在',
        icon: 'none'
      });
    }
  }
});

